package com.example.smartwaterapi.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.smartwaterapi.entity.Watchface;
import com.example.smartwaterapi.entity.UserWatchface;

import java.util.List;
import java.util.Map;

/**
 * 表盘服务接口
 */
public interface WatchfaceService extends IService<Watchface> {

    /**
     * 分页获取表盘列表
     *
     * @param page 页码
     * @param size 每页大小
     * @param params 查询参数
     * @return 表盘分页数据
     */
    Page<Watchface> getWatchfaceList(Integer page, Integer size, Map<String, Object> params);

    /**
     * 获取表盘详情
     *
     * @param id 表盘ID
     * @return 表盘详情
     */
    Watchface getWatchfaceDetail(Long id);

    /**
     * 获取推荐表盘
     *
     * @param limit 限制数量
     * @return 推荐表盘列表
     */
    List<Watchface> getFeaturedWatchfaces(Integer limit);

    /**
     * 获取热门表盘
     *
     * @param limit 限制数量
     * @return 热门表盘列表
     */
    List<Watchface> getPopularWatchfaces(Integer limit);

    /**
     * 用户下载表盘
     *
     * @param userId 用户ID
     * @param watchfaceId 表盘ID
     * @return 下载结果
     */
    UserWatchface downloadWatchface(Long userId, Long watchfaceId);

    /**
     * 用户收藏/取消收藏表盘
     *
     * @param userId 用户ID
     * @param watchfaceId 表盘ID
     * @param favorite 是否收藏
     * @return 操作结果
     */
    boolean toggleFavorite(Long userId, Long watchfaceId, boolean favorite);

    /**
     * 获取用户表盘库
     *
     * @param userId 用户ID
     * @param page 页码
     * @param size 每页大小
     * @return 用户表盘分页数据
     */
    Page<UserWatchface> getUserWatchfaces(Long userId, Integer page, Integer size);

    /**
     * 获取用户收藏的表盘
     *
     * @param userId 用户ID
     * @param page 页码
     * @param size 每页大小
     * @return 用户收藏表盘分页数据
     */
    Page<UserWatchface> getUserFavoriteWatchfaces(Long userId, Integer page, Integer size);
} 